package com.cn.pack.feign;

import com.cn.pack.config.MultipartSupportConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;

@FeignClient(name = "spring-feign-controller", url = "http://localhost:8081", configuration = MultipartSupportConfig.class)
public interface FileFeignService {

    /*
    @RequestMapping注解的参数说明
    value: 指定请求的实际地址， 比如 /action/info之类
    method： 指定请求的method类型， GET、POST、PUT、DELETE等
    consumes： 指定处理请求的提交内容类型（Content-Type），例如application/json, text/html;
    produces: 指定返回的内容类型，仅当request请求头中的(Accept)类型中包含该指定类型才返回
    params： 指定request中必须包含某些参数值是，才让该方法处理
    headers： 指定request中必须包含某些指定的header值，才能让该方法处理请求
    */
    @RequestMapping(path = "/file/upload", method = RequestMethod.POST,
            consumes = {MediaType.MULTIPART_FORM_DATA_VALUE},
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String upload(@RequestPart(name = "file") MultipartFile file);
}
